#include "graphmanager.h"
#include <stdio.h>

int i , j;
TRetvalDijkstra d;
TNodeList nodes;
TAdjMatrix m;
TAdjList a;

int main() {
	CreateEmptyNodeList(&nodes);
	CreateEmptyAdjMatrix(m);
	CreateEmptyAdjList(&a);
	
	AddNode(&nodes , CreateNode(CharToString("NODE_A") , false , false , 0.005));
	AddNode(&nodes , CreateNode(CharToString("NODE_B") , false , false , 0.005));
	AddNode(&nodes , CreateNode(CharToString("NODE_C") , false , false , 0.005));
	AddNode(&nodes , CreateNode(CharToString("NODE_D") , false , false , 0.005));
	AddNode(&nodes , CreateNode(CharToString("NODE_E") , false , false , 0.005));
	
	AddEdge(m , &a , GetPhysicalNodeName(&nodes , CharToString("NODE_A")) , GetPhysicalNodeName(&nodes , CharToString("NODE_B")) , 0.002);
	AddEdge(m , &a , GetPhysicalNodeName(&nodes , CharToString("NODE_A")) , GetPhysicalNodeName(&nodes , CharToString("NODE_C")) , 0.005);
	AddEdge(m , &a , GetPhysicalNodeName(&nodes , CharToString("NODE_B")) , GetPhysicalNodeName(&nodes , CharToString("NODE_C")) , 0.001);
	AddEdge(m , &a , GetPhysicalNodeName(&nodes , CharToString("NODE_A")) , GetPhysicalNodeName(&nodes , CharToString("NODE_D")) , 0.009);
	AddEdge(m , &a , GetPhysicalNodeName(&nodes , CharToString("NODE_D")) , GetPhysicalNodeName(&nodes , CharToString("NODE_E")) , 0.002);
	AddEdge(m , &a , GetPhysicalNodeName(&nodes , CharToString("NODE_A")) , GetPhysicalNodeName(&nodes , CharToString("NODE_E")) , 0.00001);
	
	puts("Jalur yang dilalui dari A ke E dengan ukuran data 100");
	d = FindPath(m , 0.0001 , a.NEdge , GetPhysicalNodeName(&nodes , CharToString("NODE_A")) , GetPhysicalNodeName(&nodes , CharToString("NODE_E")) , 100);
	
	PrintPath(d , &nodes);
	
	printf("\nLama waktu transmisi : %f \n" , d.Cost);
	
	puts("\nIsi adjacency list");
	PrintAdjList(a , &nodes , true);
	
	puts("\nIsi node list");
	PrintNodeList(&nodes , true);
	
	return 0;
}
